System and method for providing supplemental functionalities to a computer program via an ontology instance

ABSTRACT

Supplemental functionalities may be provided for an executable program via an ontology instance. In some embodiments, a computer program (e.g., an executable program or other computer program) associated with an ontology may be caused to be run. The ontology may include information indicating attributes for a set of applications. An instance of the ontology may be obtained, which may correspond to an application of the set of applications. Based on the ontology instance, supplemental information may be generated for the computer program. The supplemental information may be related to one or more functionalities of the application to be added to the executable program. The supplemental information may be provided as input to the computer program. The supplemental information, at least in part, may cause the one or more functionalities of the application to be made available via the executable program.

CROSS-REFERENCE TO RELATED APPLICATIONS

This present application is a continuation of U.S. patent applicationSer. No. 14/859,016, filed Sep. 18, 2015, which is related to (1) U.S.patent application Ser. No. 14/858,980 (issued as U.S. Pat. No.9,335,991 on May 20, 2016), filed Sep. 18, 2015 and entitled “SYSTEM ANDMETHOD FOR PROVIDING SUPPLEMENTAL FUNCTIONALITIES TO A COMPUTER PROGRAMVIA AN ONTOLOGY INSTANCE,” and (2) U.S. patent application Ser. No.14/859,032 (issued as U.S. Pat. No. 9,372,684 on Jun. 21, 2016), filedSep. 18, 2015 and entitled “SYSTEM AND METHOD FOR PROVIDING SUPPLEMENTALFUNCTIONALITIES TO A COMPUTER PROGRAM VIA AN ONTOLOGY INSTANCE,” each ofwhich is additionally hereby incorporated by reference herein in itsentirety.

FIELD OF THE INVENTION

The invention relates to providing ontology-configurable computerprograms and, more particularly, to providing supplementalfunctionalities for computer programs via ontology instances.

BACKGROUND OF THE INVENTION

Application software (also referred to as an application) is generallydesigned to perform one or more tasks, activities, or projects on behalfof users. For example, some business applications are used by businessusers to perform various business functions, like measuringproductivity, tracking inventory, workflow management, and executingvarious back-office tasks. Business applications sharing the same orsimilar business functions may be considered as a class of businessapplications, such as business process management (BPM) applications andmaster data management (MDM) applications. The business applications inthe same class may share data models, such as the same or similarbusiness objects (e.g., classes, objects, and relationships). Inaddition to its business function, each particular business applicationmay be built based on knowledge from one or more domains of interest,such as the human resource domain, healthcare domain, technology domain,etc. For example, a new employee on-boarding application may belong tothe class of BPM applications and specialize in the human resourcedomain.

Traditionally, data models shared by the same class of businessapplications are expressed by custom software modules written, forinstance, in a traditional object-oriented programming languagereflecting the data model as business objects. Typically, to adddomain-specific knowledge to a business application, programmers writeapplication code embodying the domain-specific knowledge in the sameprogramming language (as the source code of the business application),or the application code is generated automatically based on someinformation gathered from a business analyst or a domain expert.Regardless, these typical approaches generally require changes to theapplication code of the business application. As such, when new code isintroduced in an application, a significant amount of time and effort isgenerally required to ensure the integrity of the resulting application,which brings significant barriers in terms of productivity, and canpropagate errors throughout a code base in an unpredictable fashion.These and other drawbacks exist.

SUMMARY OF THE INVENTION

The invention addressing these and other drawbacks relates to methods,apparatuses, and/or systems for providing ontology-configurable computerprograms and/or supplemental functionalities for computer programs viaontology instances. As an example, an application (and/or a computerprogram thereof) may be supplemented with additional functionalities,e.g., for specializing a business application in a particular domain ofinterest, without having to modify the application code of theapplication (and/or without having to recompile such application code torecreate an “updated” version of the executable). To achieve this, forexample, a business application may utilize at runtime supplementalinformation as at least part of its working memory.

In accordance with some embodiments described herein, a method forproviding supplemental functionalities for a computer program (e.g., anexecutable program or other computer program) via an instance of anontology describing a class of applications may be provided. A computerprogram associated with an ontology may be caused to be run. Theontology may include information indicating attributes for a set ofapplications. Examples of the attributes include, but are not limitedto, classes, properties, and axioms. An instance of the ontology may beobtained, which corresponds to an application of the set ofapplications. Based on the ontology instance, supplemental informationrelated to one or more functionalities of the application to be added tothe computer program may be provided for the computer program. Thesupplemental information may be provided as input to the computerprogram. The supplemental information, at least in part, may cause theone or more functionalities of the application be made available via theexecutable program.

In some embodiments, the computer program may be a logic program forexecuting the functionalities of the application using the supplementalinformation. The computer program may be configurable to perform a setof tasks common to a class of business application in each of severaldifferent domains of interest. The executable program may obtain thesupplemental information from working memory at runtime. Thesupplemental information may include metadata in a graph data structure,such as a Resource Description Framework (RDF) graph. The one or morefunctionalities may be made available via the executable program withoutrecompiling the executable program.

In some embodiments, by obtaining a different instance of the ontologythat corresponds to another application of the set of applications,different supplemental information related to different functionalitiesof the other application may be generated and provided to the computerprogram to enable to the different functionalities to be available viathe computer program. For example, the computer program may be abusiness application that can be supplemented to “create” other businessapplications in the same class without, for example, having to modifythe code of the business application or recompile an updated version ofthe business application.

In accordance with other aspects of the inventions, a method forproviding supplemental functionalities for a computer program (e.g., anexecutable program or other computer program) via a domain-specificontology and an instance of a general ontology may be provided. Forexample, a business application may be specialized using adomain-specific ontology by this method. A computer program may becaused to be run. A general ontology and a domain-specific ontology maybe obtained. The domain-specific ontology may be associated with adomain of interest, and the general ontology can be used to interpretthe domain-specific ontology or any other domain-specific ontology. Aninstance of the general ontology may be obtained. The general ontologyinstance may be based on the domain-specific ontology and correspond toan application associated with the domain of interest. Based on thegeneral ontology instance, supplemental information related to one ormore functionalities of the application to be added to the computerprogram may be generated for the computer program. The supplementalinformation may be provided as input to the computer program. Thesupplemental information, at least in part, may cause the one or morefunctionalities of the application be made available via the executableprogram.

In some embodiments, the computer program may be a logic program forexecuting the functionalities of the application using the supplementalinformation. The computer program may be configurable to perform a setof tasks common to a class of business application in each of severaldifferent domains of interest. The executable program may obtain thesupplemental information from working memory at runtime. Thesupplemental information may include metadata in a graph data structure,such as an RDF graph. The one or more functionalities may be madeavailable via the executable program without recompiling the executableprogram.

In some embodiments, by obtaining a different domain-specific ontologyin another domain of interest and a different instance of the generalontology based on the different domain-specific ontology, differentsupplemental information related to different functionalities of anotherapplication may be generated and provided to the computer program toenable the different functionalities to be available via the computerprogram. For example, the computer program may be a business applicationthat can be supplemented to “create” other business applications indifferent domains of interests without, for example, having to modifythe code of the business application or recompile an updated version ofthe business application.

In accordance with still other aspects of the inventions, a method forproviding supplemental functionalities for a computer program (e.g., anexecutable program or other computer program) via a domain-specificontology and an instance of an ontology describing a class ofapplications may be provided. For example, a domain-specific businessapplication that belongs to a class of business applications may bespecialized by this method. A computer program associated with anontology may be caused to be run. The ontology may include informationindicating attributes for a set of applications. Examples of theattributes include, but are not limited to, classes, properties, andaxioms. A domain-specific ontology may be obtained. The domain-specificontology may be associated with a domain of interest. An instance of theontology may be obtained. The ontology instance may be based on thedomain-specific ontology and correspond to an application of the set ofapplications that is associated with the domain of interest. Based onthe ontology instance, supplemental information related to one or morefunctionalities of the application to be added to the computer programmay be generated for the computer program. The supplemental informationmay be provided as input to the computer program. The supplementalinformation, at least in part, may cause the one or more functionalitiesof the application be made available via the executable program.

In some embodiments, the computer program may be a logic program forexecuting the functionalities of the application using the supplementalinformation. The computer program may be configurable to perform a setof tasks common to a class of business application in each of severaldifferent domains of interest. The executable program may obtain thesupplemental information from working memory at runtime. Thesupplemental information may include metadata in a graph data structure,such as an RDF graph. The one or more functionalities may be madeavailable via the executable program without recompiling the executableprogram.

In some embodiments, by obtaining a different instance of the ontologythat is based on the domain-specific ontology and corresponds to anotherapplication of the set of applications in the domain of interest,different supplemental information related to different functionalitiesof the other application may be generated and provided to the computerprogram to enable the different functionalities to be available via thecomputer program. For example, the computer program may be a businessapplication that can be supplemented to “create” other businessapplications in the same class without, for example, having to modifythe code of the business application or recompile an updated version ofthe business application.

Various other aspects, features, and advantages of the inventions willbe apparent through the detailed description of the invention and thedrawings attached hereto. It is also to be understood that both theforegoing general description and the following detailed description areexemplary and not restrictive of the scope of the inventions. As used inthe specification and in the claims, the singular forms of “a”, “an”,and “the” include plural referents unless the context clearly dictatesotherwise. In addition, as used in the specification and the claims, theterm “or” means “and/or” unless the context clearly dictates otherwise.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a system for providing ontology-configurable computerprograms and/or supplemental functionalities for computer programs viaontology instances, in accordance with some embodiments.

FIG. 2 shows an ontology management subsystem, in accordance with someembodiments.

FIG. 3 shows an executable program that accesses supplementalinformation in a working memory at runtime, in accordance with someembodiments.

FIG. 4 shows a process of providing supplemental functionalities for acomputer program via an instance of an ontology describing a class ofapplications, in accordance with some embodiments.

FIG. 5 is a flowchart of a method of providing supplementalfunctionalities for a computer program via an instance of an ontologydescribing a class of applications, in accordance with some embodiments.

FIG. 6 is a flowchart of a method of generating a programming interfaceand logic rules based on an ontology describing a class of applications,in accordance with some embodiments.

FIG. 7 shows a process of providing supplemental functionalities for acomputer program via a domain-specific ontology and an instance of ageneral ontology, in accordance with some embodiments.

FIG. 8 is a flowchart of a method of providing supplementalfunctionalities for a computer program via a domain-specific ontologyand an instance of a general ontology, in accordance with someembodiments.

FIG. 9 is a flowchart of a method of generating a programming interfaceand logic rules based on a domain-specific ontology and a generalontology, in accordance with some embodiments.

FIG. 10 shows a process of providing supplemental functionalities for acomputer program via a domain-specific ontology and an instance of anontology describing a class of applications, in accordance with someembodiments.

FIG. 11 is a flowchart of a method of providing supplementalfunctionalities for a computer program via a domain-specific ontologyand an instance of an ontology describing a class of applications, inaccordance with some embodiments.

FIG. 12 is a flowchart of a method of generating a programming interfaceand logic rules based on a domain-specific ontology and an instance ofan ontology describing a class of applications, in accordance with someembodiments.

FIG. 13 shows an ontology describing a class of BPM applications, inaccordance with some embodiments.

FIG. 14 shows a general ontology, in accordance with some embodiments.

FIG. 15 shows a domain-specific ontology in the human resource domain,in accordance with some embodiments.

DETAILED DESCRIPTION OF THE INVENTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the embodiments of the invention. It will beappreciated, however, by those having skill in the art that theembodiments of the invention may be practiced without these specificdetails or with an equivalent arrangement. In other instances,well-known structures and devices are shown in block diagram form inorder to avoid unnecessarily obscuring the embodiments of the invention.

To mitigate the problems described herein, the inventors had to bothinvent solutions and, in some cases just as importantly, recognizeproblems overlooked (or not yet foreseen) by others in the field ofenterprise software development. Indeed, the inventors wish to emphasizethe difficulty of recognizing those problems that are nascent and willbecome much more apparent in the future should trends in industrycontinue as the inventors expect. Further, because multiple problems areaddressed, it should be understood that some embodiments areproblem-specific, and not all embodiments address every problem withtraditional systems described herein or provide every benefit describedherein. That said, improvements that solve various permutations of theseproblems are described below.

The complexity of software, particularly in business applications, hasexpanded dramatically in recent years. As a result, the cost of manytypes of custom software has risen. It is also believed that theresponsiveness of developers to changing business needs has decreased.In part, this is caused by code added to address more complex use casesand extensive testing of new versions to understand complex interactionsintroduced by revisions to applications.

These issues, in some cases, are mitigated by some embodiments describedbelow. Some embodiments may separately address two aspects of anapplication: (1) those aspects particular to a class of businessapplications; and (2) those aspects particular to a domain in which aninstance of the class is to be applied. In some cases, relativelyflexible executable code is generated for a class of businessapplications, and then functionality of that code is refined with anontology that reflects more specific aspects of a particular domain. Insome cases, the ontology can be created much more efficiently than thecorresponding bespoke application can be created from scratch, as theontology can facilitate code re-use across domains in some embodiments.And in some cases, the ontology can be modified with less risk to thelarger code base, often without compiling new code.

It should be emphasized, though, that several inventions are described.These inventions are independently useful, so not all embodimentsmitigate all of the problems addressed above, and some embodimentsprovide other benefits discussed below.

Description of Example Systems

FIG. 1 shows a system 100 for providing supplemental functionalities foran executable program via ontology instances, in accordance with someembodiments. As shown in FIG. 1, the system 100 may comprise a computersystem 102 (which may be multiple computer systems 102). The computersystem 102 may comprise one or more physical processors 106 programmedwith one or more computer program instructions and electronic storage108, or other components. Various programs and subsystems may beimplemented on the physical processors 106, including ontologymanagement subsystem 112, supplemental information generation subsystem114, or other components (e.g., ontology-configurable computer programsor applications, other subsystems, etc.).

In some embodiments, the computer system 102 in FIG. 1 may includecommunication lines or ports to enable the exchange of information witha network or other computing platforms. The computer system 102 mayinclude a plurality of hardware, software, and/or firmware componentsoperating together to provide the functionality attributed herein to thecomputer system 102. For example, the computer system 102 may beimplemented by a cloud of computing platforms operating together as thecomputer system 102.

The electronic storage 108 may comprise non-transitory storage mediathat electronically stores information. The electronic storage media ofthe electronic storage 108 may include one or both of system storagethat is provided integrally (e.g., substantially non-removable) with thecomputer system 102 or removable storage that is removably connectableto the computer system 102 via, for example, a port (e.g., a USB port, afirewire port, etc.) or a drive (e.g., a disk drive, etc.). Theelectronic storage 108 may include one or more of optically readablestorage media (e.g., optical disks, etc.), magnetically readable storagemedia (e.g., magnetic tape, magnetic hard drive, floppy drive, etc.),electrical charge-based storage media (e.g., EEPROM, RAM, etc.),solid-state storage media (e.g., flash drive, etc.), and/or otherelectronically readable storage media. The electronic storage 108 mayinclude one or more virtual storage resources (e.g., cloud storage, avirtual private network, and/or other virtual storage resources). Theelectronic storage 108 may store software algorithms, informationdetermined by the processors 106, information received from the computersystem 102, information received from client computing platforms, orother information that enables the computer system 102 to function asdescribed herein.

The processors 106 may be programmed to provide information processingcapabilities in the computer system 102. As such, the processors 106 mayinclude one or more of a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information. In someembodiments, the processors 106 may include a plurality of processingunits. These processing units may be physically located within the samedevice, or the processors may represent processing functionality of aplurality of devices operating in coordination. The processors 106 maybe programmed to execute computer program instructions to performfunctions described herein of the subsystems 112 and 114, or othercomponents. The processors 106 may be programmed to execute computerprogram instructions by software; hardware; firmware; some combinationof software, hardware, or firmware; and/or other mechanisms forconfiguring processing capabilities on the processors 106.

A computer program on the computer system 102 may comprise anapplication runtime that can cause the computer system 102 to performindicated tasks according to encoded instructions. The instructions maybe any instructions (such as bytecode) for a software interpreterincluding, but not limited to, machine code instructions for theprocessors 106, scripting language source file, etc. In some cases, theinstructions may be complied or interpreted instructions for whichsource code is not provided to the party developing ontologies. Anexecutable (of the computer program) may be hand-coded in machinelanguage directly or may be developed as source code in any high-levelprogramming language or assembly language and then complied into eitheran executable machine code file or non-executable machine code objectfiles. The executable program may further include a runtime system,which provides runtime language features and interactions with theruntime environment of the computer system 102. In one example, theruntime system of the executable program may be a logic programincluding a rule engine and a set of runtime rules that control theexecution of the executable program. As an example, specialization ofthe executable program may be achieved by accessing supplementalinformation in a working memory at runtime without the need to modifythe executable program (e.g., reprogramming the source code and/orrecompiling the source code of the executable program). For example,functionalities of any particular application or a class of applicationsin a particular domain of interest may be enabled on the executableprogram using one or more ontologies as will be described in detailsbelow. In some embodiments, the executable program may be a logicprogram for executing functionalities of an application using thesupplemental information.

The ontology management subsystem 112 may perform various functions withrespect to different types of ontologies in different embodiments. Anontology may be a machine-processable artifact that defines and capturesthe relationships between concepts (classes) and objects (individuals ofsuch classes) in some domain of interest. A logic-based ontologylanguage allows ontologies to be specified as logical theories, meaningthat it is possible to reason about the relationships between theconcepts and objects that are expressed in such an ontology.

Referring now to FIG. 2 (in which an ontology management subsystem 112is shown), the ontology management subsystem 112 may include an ontologydefining component 202 configured to define an ontology. The ontologymay be defined in any logic-based ontology language or specific versionof logic-based ontology language using any semantic editor. For example,the ontology management subsystem 112 may define and modify an ontologyin Web Ontology Language DL 2.0 (OWL DL 2.0) using the Protégé ontologyeditor. In different embodiments, various types of ontologies may bedefined by the ontology management subsystem 112, such as an ontologydescribing a class of applications (a.k.a. a class ontology), e.g., aBPM class ontology; an ontology that is associated with a specificdomain of interest (a.k.a. a domain-specific ontology), e.g., a humanresource domain ontology; and an ontology that can interpret anydomain-specific ontology (a.k.a. a general ontology), e.g., a domainmeta model ontology defined to describe the class structure of anydomain-specific ontology. More examples of classes of applications anddomains of interests are shown below in Table 1.

TABLE 1 Class of Applications Domain of Interest Business ProcessManagement (BPM) Healthcare Enterprise Resource Planning (ERP) Financeand Banking Claim Adjudication Human Resource Content Management System(CMS) Manufacturing Workforce Management Distribution and LogisticsCustomer Relationship Management (CRM) Government and Public Sector CallCenter Management Defense Industry Master Data Management (MDM)Automotive Enterprise Asset Management (EAM) Engineering Supply ChainManagement (SCM) Insurance Accounting Management Media Revenue CycleManagement (RCM) Real Estate Order and Fulfillment Management RetailOperation Management Technology Help Desk Management TelecommunicationTransportation & Travel EducationIt should be understood that multiple domains of interest(domain-specific verticals) may be applied to each class ofapplications. For example, each of the domains of interest listed inTable 1 that use computers may be applied to the Help Desk Managementclass of applications, and ERP software has applications inmanufacturing, finance, banking, healthcare services, etc.

FIGS. 13-15 illustrate various examples of ontologies described in OWLDL 2.0 using the Protégé ontology editor. Each ontology includesinformation indicating various attributes, such as classes, properties,and axioms. FIG. 13 shows an extract of a class ontology 1300 describingthe class of BPM applications. In this example, the BPMN 2.0specification from the Object Management Group (OMG) is used as a guidefor elaborating an ontology for the class of BPM applications. Theontology, being logic-based, embodies axioms contained the textualdescription of the BPMN specification. The class information, such asclass hierarchy (class structure), is shown on the upper left section inFIG. 13; the property information is shown on the lower left section ofFIG. 13. As an example, in FIG. 13, the axioms of class MessageEndEventare shown in the lower right section. The first axiom is a classconstruct describing an equivalent class to the class MessageEndEvent:MessageEndEvent≡EndEvent and (hasEventDefinitions someMessageEventDefinition) and (hasEventDefinition exactly 1 Thing).

This axiom can be translated into plain language as: A MessageEndEventis equivalent to EndEvent having a single EventDefinition of typeMessageEventDefinition. Once the ontology is defined by the ontologydefining component 202, it may be saved as a file in any suitableformat, such as RDF/XML. RDF is a known data model for encoding metadataand knowledge on the Semantic Web using facts expressed as triples. Forexample, the definitions of the class MessageEndEvent may be describedin the saved RDF/XML file as:

<owl:Class rdf:about=“&bpmn;MessageEndEvent”> <owl:equivalentClass><owl:Class> <owl:intersectionOf rdf:parseType=“Collection”><rdf:Description rdf:about=“&bpmn;EndEvent”/> <owl:Restriction><owl:onProperty rdf:resource=“&bpmn;hasEventDefinitions”/><owl:someValuesFrom rdf:resource=“&bpmn;MessageEventDefinition”/></owl:Restriction> <owl:Restriction> <owl:onPropertyrdf.resource=“&bpmn;hasEventDefinitions”/> <owl:cardinalityrdf:datatype=“&xsd;nonNegativeInteger”>1</owl:cardinality></owl:Restriction> </owl:intersectionOf> </owl:Class></owl:equivalentClass> <rdfs:subClassOf rdf:resource=“&bpmn;EndEvent”/><rdfs:subClassOf> <owl:Restriction> <owl:onPropertyrdf:resource=“&bpmn;topReactiveHelper”/><owl:hasValue>iMessageEndEvent</owl:hasValue> </owl:Restriction></rdfs:subClassOf> </owl:Class>

FIG. 14 shows an extract of a general ontology 1400 that can describeand interpret any domain-specific ontology. A domain-specific ontologymay be described using metadata information. The metadata informationmay describe the domain-specific ontology class and propertyinformation. The structure of the metadata information may be itselfdescribed using a general ontology called the domain meta modelontology. The domain meta model ontology may not be modified and have nodependency on any domain-specific ontology. The domain meta model maybecome a known and explicit structure used by an executable program(e.g., an ontology-configurable executable program) to interpret thestructure of the domain-specific ontology. The key classes of thisgeneral ontology in FIG. 14 include ClassMetadata and PropertyMetadatadescribing the structure of class and property respectively.

FIG. 15 shows an extract of a domain-specific ontology 1500 that isassociated with the human resource domain (a human resource domainontology). The human resource domain ontology may be described byinstances of the domain meta model ontology shown in FIG. 14. Forexample, the ontology in FIG. 14 shows that a Person can be Employee,BoardDirector and Executive depending on the Role they have. It shouldbe understood that FIGS. 13-15 show illustrative ontologies only and areby no means complete in order to describe the class of BPM applications,the domain meta model, and the human resource domain, respectively.

With respect to FIG. 2, the ontology management subsystem 112 may alsoinclude an ontology validation component 204 configured to validate anyontology and assign a freeze to the validated ontology. In someembodiments, the ontology validation component 204 may include anysemantic reasoners, such as Pellet, RacerPro, FaCT++, and HermiT, forensuring an ontology is consistent once the ontology has been defined bythe ontology defining component 202. An inconsistent ontology may be anontology that, by virtue of what has been stated in the ontology, cannothave any models, and entails everything, meaning any conclusion can bededuced. Once the ontology is complete (meaning it describes all theconcepts, objects, their relationships, and axioms) and is ensured to beconsistent, it may be frozen by the ontology validation component 204such that the ontology can no longer be changed or modified. If theontology needs to be changed, it needs to be redefined by the ontologydefining component 202 as a new version of the ontology. It should benoted that any types of ontologies defined by the ontology definingcomponent 202, e.g., class ontologies, general ontologies, anddomain-specific ontologies, may be validated and frozen by the ontologyvalidation component 204.

The ontology management subsystem 112 in FIG. 2 may further include aprogramming interface generation component 206 and a logic rulegeneration component 208. The programming interface generation component206 may extract class information 210 from a frozen ontology andgenerate, based on the extracted class information 210, a programminginterface to allow an executable program (e.g., an ontology-configurableexecutable program) to access the supplemental information via theprogramming interface. An ontology may be processed by a computerprogram to extract class information 210 including, for example, theclass structure (concept hierarchy), the data properties associated witheach class, and the relationships, if any, shared between classes. Theclass information 210 may be used by the programming interfacegeneration component 206 to generate computer code in any programminglanguage, such as SCALA™, JAVA™, PYTHON™, C++™, C#™, RUBY™, etc., to beused as a programming interface for a class of applications and/orapplications in a domain of interest. The programming interface referredherein may be computer code in a programming language that describesclasses corresponding to the static structure of the ontology and thatprovides a natural interface to the executable program for accessing thesupplemental information (e.g., metadata of ontology class structures)stored in a working memory at runtime.

The logic rule generation component 208 in FIG. 2 may extract axiominformation 212 from a frozen ontology and generate, based on the axiominformation 212, a set of logic rules. The logic rules may be used tocompute entailments on the instances of an ontology. The entailments mayinclude the inferred class hierarchy (asserted and inferred classmembership of the instances) as well as be used to ensure the assertedinstances are consistent with the ontology. That is, the logic rules maybe used to transform ontology instances into application metadatainformation and used to validate ontology instances to ensureconformance of the instances with the ontology. In some embodiments, anontology instance is frozen, and its corresponding metadata informationbecomes read-only once the ontology instance has been validated by thelogic rules generated by the logic rule generation component 208.Depending on the type of ontology from which the logic rules aregenerated, the logic rules may include class logic rules generated basedon a class ontology, general logic rules generated based on a generalontology, and specific logic rules generated based on a domain-specificontology. In some embodiments, only the class logic rules and generallogic rules may be used for computing entailments on ontology instancesand for validating ontology instances. The logic rules may be augmentedwith the runtime rules of the executable program to control theexecution of the executable program. For example, the specific logicrules generated based on a domain-specific ontology may be applied tothe domain-specific ontology instance by the executable program atruntime.

Turning back to FIG. 1, the supplemental information generationsubsystem 114 may generate supplemental information related to one ormore functionalities of an application based on an instance of anontology defined by the ontology management subsystem 112. In one usecase, the instance may be from a class ontology and specify one of aclass of applications (e.g., a BPM application), and the supplementalinformation is related to functionalities of one of the BPMapplications. In another use case, the instance may be from a generalontology (e.g., a domain meta model ontology) and describe adomain-specific ontology (e.g., the human resource domain), and thesupplemental information is related to functionalities of an applicationin the human resource domain. An ontology instance may be described inany suitable format, such as in the forms of triples in the RDF/XMLformat. The supplemental information generated by the supplementalinformation generation subsystem 114 may include metadata informationtransformed from the ontology instance. Additionally or optionally, thelogic rules generated by the logic rule generation component 208 of theontology management subsystem 112 may be used by the supplementalinformation generation subsystem 114 to infer additional metadatainformation as part of the supplemental information.

Referring to FIG. 3, in some embodiments, the supplemental information304 includes metadata in a graph data structure, such as an RDF graph,stored in a working memory 302. The supplemental information 304 mayinclude metadata 306 transformed directly from an ontology instance andmetadata 308 inferred from an ontology instance based on the logic rulesgenerated by the logic rule generation component 208 of the ontologymanagement subsystem 112. For metadata 306, it may include facts, e.g.,objects (or individuals) of the classes, asserted by a class ontology,which can be used to describe a particular application in the class ofapplications corresponding to the class ontology. Metadata 306 mayinclude facts, e.g., objects (or individuals) of the classes, assertedby a general ontology (e.g., a domain meta model ontology) that can beused to describe and interpret any domain-specific ontology. Formetadata 308, it may include entailments computed from objects inmetadata 306 using the logic rules. The entailments may include theverification that the objects are consistent with the axioms of theontology, meaning that no axioms are violated. Both metadata 306 and 308may be augmented using the logic rules to form the supplementalinformation 304 that is related to functionalities of an application.

In FIG. 3, an executable program 309 may include a rule engine 310 themanipulates the supplemental information 304 in the working memory 302at runtime via the programming interface 316 based on a set of rulesincluding the runtime rules 312 and logic rules 314. As mentioned above,the programming interface 316 may be generated by the programminginterface generation component 206 of the ontology management subsystem112. The programming interface 316 may include computer code in aprogramming language describing the class structures that are used bythe supplemental information 304 in the working memory 302. Theexecutable program 309 can thus get access to the metadata 306, 308 viathe programming interface 316. The logic rules 314 used by the ruleengine 310 may include class logic rules, general logic rules, andspecific logic rules generated from corresponding types of ontologies,each of which may be utilized for controlling the executable program 309to access corresponding information. The runtime rules 312, on the otherhand, may not alter the supplemental information 304 in any way andprovide control capability to the executable program 309. The runtimerules 312 may be utilized for controlling the executable program 309 toaccess context information of executing the executable program 309.Accordingly, by placing different supplemental information 304corresponding to functionalities of different applications in theworking memory 302 and applying the programming interface 316 and logicrules 314 generated from the corresponding ontologies, the executableprogram 309 can be specialized with different functionalities withoutthe need of adding or modifying computer code.

It should be appreciated that the description of the functionalityprovided by the different subsystems 112 and 114 described herein is forillustrative purposes only, and is not intended to be limiting, as anyof subsystems 112 and 114 may provide more or less functionality than isdescribed. For example, additional subsystems may be programmed toperform some or all of the functionality attributed herein to one ofsubsystems 112 and 114.

The system 100 may further comprise a client device 104 (or multipleclient devices 104). A client device 104 may comprise any type of mobileterminal, fixed terminal, or other device. By way of example, a clientdevice 104 may comprise a desktop computer, a notebook computer, anetbook computer, a tablet computer, a smartphone, a navigation device,an electronic book device, a gaming device, or other user device. Usersmay, for instance, utilize one or more client devices 104 to interactwith computer system 102 or other components of system 100. The usersmay include administrative users such as managers or programmers whomanage the subsystems 112 and 114. The users may also include customerswho use ontology-configurable programs and applications derived thereof.

Attention will now be turned to a more detailed description of variousembodiments comprising one or more features related to providingontology-configurable computer programs and/or supplementalfunctionalities for computer programs via ontology instances. It shouldbe noted that features described herein may be implemented separately orin combination with one another.

Functionalities Provided Via a Class Ontology Instance

FIGS. 4-6 illustrate one aspect of the invention, which can providesupplemental functionalities for an executable program via a classontology instance. FIGS. 4-6 further describe the design and creation ofa class of applications by the use of a class ontology. The ontologydescribes the class of applications, and, at runtime, instances of theontology are used as metadata for specifying a particular application.

As shown in FIG. 4, an ontology 402 (a class ontology) describes a classof applications 404, such as the classes listed in Table 1. For example,a BPM class ontology may embody all of the axioms contained in thetextual description of the BPMN specification. An example BPM classontology has been described above with respect to FIG. 13. As mentionedabove, both class information and axiom information may be extractedfrom a class ontology and used to generate the programming interface andlogic rules, respectively. Following the BPM class ontology exampledescribed in FIG. 13, the BPM class ontology in the format RDF/XML maybe processed by a computer program to generate classes in programminglanguages equivalent to the static structure of the BPM class ontology.For example, the class in Scala programming language representing theMessageEndEvent class in RDF/XML is:

object MessageEndEventCriteria { def apply(m: Model) = newMessageEndEventCriteria(m, List( (m.owl.owlResource.rdfType,m.rn.MessageEndEvent) )) } class MessageEndEventCriteria(m: Model, l:List[(topengine.api.rdf.Resource, topengine.api.rdf.Resource)]) extendstopengine.api.owl.Criteria(l) { def addTopReactiveHelper(o: String) =new MessageEndEventCriteria(m, (m.rn.topReactiveHelper,m.rdfSession.createLiteral(o)) :: criteria) defaddHasEventDefinitions(o: EventDefinition) = newMessageEndEventCriteria(m, (m.rn.hasEventDefinitions, o.s) :: criteria)def addIncomingSequenceFlows(o: SequenceFlow) = newMessageEndEventCriteria(m, (m.rn.incomingSequenceFlows, o.s) ::criteria) def addOutgoingSequenceFlow(o: SequenceFlow) = newMessageEndEventCriteria(m, (m.rn.outgoingSequenceFlow, o.s) :: criteria)} object MessageEndEvent { def apply(m: Model, s:topengine.api.rdf.Resource) = { new MessageEndEventImpl(m,m.createInstanceOf(s, m.rn.MessageEndEvent)) } def createInstance(m:Model) = new MessageEndEventImpl(m,m.createInstanceOf(m.rn.MessageEndEvent)) def createNamedInstance(m:Model, name: String) = new MessageEndEventImpl(m,m.createNamedInstanceOf(name, m.rn.MessageEndEvent)) defasMessageEndEvent(m: Model, s: topengine.api.rdf.Resource):Option[MessageEndEvent] = { if(m.isInstanceOf(s, m.rn.MessageEndEvent))Some(MessageEndEvent(m, s)) else None } def find(m: Model):Iterable[MessageEndEvent] = m.findCustomSubject(m.rn.MessageEndEvent,MessageEndEventCriteria(m), {r =>MessageEndEvent.asMessageEndEvent(m.bpmn, r) match { case Some(c) => ccase None => throwtopengine.api.TopEngineException(“MessageEndEvent.find has subject(s)that are not type MessageEndEvent”) }}) def find(m: Model, criteria:MessageEndEventCriteria): Iterable[MessageEndEvent] =m.findCustomSubject(m.rn.MessageEndEvent, criteria, {r =>MessageEndEvent.asMessageEndEvent(m.bpmn, r) match { case Some(c) => ccase None => throwtopengine.api.TopEngineException(“MessageEndEvent.find has subject(s)that are not type MessageEndEvent”) }}) } trait MessageEndEvent extendsEndEvent { val s: topengine.api.rdf.Resource // Properties } classMessageEndEventImpl(m: Model, s: topengine.api.rdf.Resource) extendstopengine.api.owl.ThingImpl(m.owl, s) with MessageEndEvent { // Baseclasses def asEndEvent: EndEvent = EndEvent(m.bpmn, s) def asEvent:Event = Event(m.bpmn, s) def asFlowNode: FlowNode = FlowNode(m.bpmn, s)def asFlowElement: FlowElement = FlowElement(m.bpmn, s) def asThing:topengine.api.owl.Thing = topengine.api.owl.Thing(m.owl, s) //Properties // topReactiveHelper is a Datatype Functional Property, rangeis String def topReactiveHelper: Option[String] =m.hasObjectAsLiteral(s, m.rn.topReactiveHelper) map { _.getString } defsetTopReactiveHelper(o: String) = m.setFunctionalPropertyValue(s,m.rn.topReactiveHelper, o) // hasEventDefinitions is an Object Propertydef hasEventDefinitions: Iterable[EventDefinition] =m.rdfSession.getCustomObjects(s, m.rn.hasEventDefinitions, { r =>EventDefinition.asEventDefinition(m.bpmn, r) match { case Some(c) => ccase None => throwtopengine.api.TopEngineException(“MessageEndEvent.hasEventDefinitionshas object(s) that are not type EventDefinition”) }}) defaddHasEventDefinitions(o: EventDefinition) = m.addPropertyValue(s,m.rn.hasEventDefinitions, o.s) def removeHasEventDefinitions(o:EventDefinition) = m.removePropertyValue(s, m.rn.hasEventDefinitions,o.s) def removeAllHasEventDefinitions = m.removePropertyValue(s,m.rn.hasEventDefinitions) // incomingSequenceFlows is an Object Propertydef incomingSequenceFlows: Iterable[SequenceFlow] =m.rdfSession.getCustomObjects(s, m.rn.incomingSequenceFlows, { r =>SequenceFlow.asSequenceFlow(m.bpmn, r) match { case Some(c) => c caseNone => throwtopengine.api.TopEngineException(“MessageEndEvent.incomingSequenceFlowshas object(s) that are not type SequenceFlow”) }}) defaddIncomingSequenceFlows(o: SequenceFlow) = m.addPropertyValue(s,m.rn.incomingSequenceFlows, o.s) def removeIncomingSequenceFlows(o:SequenceFlow) = m.removePropertyValue(s, m.rn.incomingSequenceFlows,o.s) def removeAllIncomingSequenceFlows = m.removePropertyValue(s,m.rn.incomingSequenceFlows) // outgoingSequenceFlow is an ObjectProperty def outgoingSequenceFlow: Iterable[SequenceFlow] =m.rdfSession.getCustomObjects(s, m.rn.outgoingSequenceFlow, { r =>SequenceFlow.asSequenceFlow(m.bpmn, r) match { case Some(c) => c caseNone => throwtopengine.api.TopEngineException(“MessageEndEvent.outgoingSequenceFlowhas object(s) that are not type SequenceFlow”) }}) defaddOutgoingSequenceFlow(o: SequenceFlow) = m.addPropertyValue(s,m.rn.outgoingSequenceFlow, o.s) def removeOutgoingSequenceFlow(o:SequenceFlow) = m.removePropertyValue(s, m.rn.outgoingSequenceFlow, o.s)def removeAllOutgoingSequenceFlow = m.removePropertyValue(s,m.rn.outgoingSequenceFlow) override def equals(o: Any) = o match { casethat: topengine.api.owl.ThingImpl => that.s.key == s.key case _ => false} override def hashCode = s.key }The generated class provides a natural interface to executable programswritten in Scala programming language for accessing supplementalinformation (e.g., metadata) stored in a working memory. The classMessageEndEventImpl is the generated implementation class that performsthe access to the underlying supplemental information, for example, inRDF graph.

The generated classes in the programming language may capture the staticdata model embodied by the ontology. The axioms may be taken intoconsideration by logic rules that are applied to the supplementalinformation continuously as data is added to or subtracted from thesupplemental information. The logic rules may be generated automaticallyfrom the BPM class ontology described in FIG. 13. For example, the logicrules corresponding to the class equivalence axiom for the classMessageEndEvent are:

# bpmn:MessageEndEvent is equivalent to the following conjunction:[n=bpmn52, s=100]: (?s rdf:type bpmn:EndEvent). (?sbpmn:hasEventDefinitions ?o).(?o rdf:type bpmn:MessageEventDefinition).[?s test_cardinality bpmn_res:8] −> (?s rdf:type bpmn:MessageEndEvent)

Back to FIG. 4, an instance 406 of the class ontology 402 may beobtained from the class ontology 402. The ontology instance 406 mayspecify an application 408 in the class of applications 404. Followingthe BPM class ontology example described in FIG. 13, a sample humanresource employee on-boarding process may be specified as an instance ofthe example BPM class ontology, and thus, the employee on-boardingapplication is a member of the class of BPM applications. Theon-boarding process described herein is for illustrative purposes onlyand is not meant to be complete. The process includes an instance ofbpmn:Process class having a single bpmn:FlowElement of typebpmn:StartEvent. This start event has an event definition of typebpmn:MessageEventDefinition. The event definition defines the mappingelements for the message initiating the business process. In thisexample, it defines the mapping for the first and last name of theemployee. The example employee on-boarding process may be expressed asindividuals of the example BPM class ontology and can be expressed as anOWL document in the RDF/XML format:

<owl:NamedIndividual rdf:about=“&acme-bpmn-hr;iAcmeOnboardingProcess”><rdf:type rdf:resource=“&bpmn;Process”/> <bpmn:hasFlowElementrdf:resource=“&acme-bpmn-hr;iAcmeStartOnboarding”/></owl:NamedIndividual> <owl:NamedIndividualrdf:about=“&acme-bpmn-hr;iAcmeStartOnboarding”> <rdf:typerdf:resource=“&bpmn;StartEvent”/> <bpmn:hasEventDefinitionsrdf:resource=“&acme-bpmn- hr;iStartOnboardingMessageDefinition”/></owl:NamedIndividual> <owl:NamedIndividualrdf:about=“&acme-bpmn-hr;iFirstNameMappingElm”> <rdf:typerdf:resource=“&bpmn;MappingElement”/><bpmn:sourceFieldName>GivenName</bpmn:sourceFieldName><bpmn:targetFieldName>hr:firstName</bpmn:targetFieldName><bpmn:targetFieldType>xsd:string</bpmn:targetFieldType><bpmn:sourceFieldType>xsd:string</bpmn:sourceFieldType></owl:NamedIndividual> <owl:NamedIndividualrdf:about=“&acme-bpmn-hr;iLastNameMappingElm”> <rdf:typerdf:resource=“&bpmn;MappingElement”/><bpmn:targetFieldType>xsd:string</bpmn:targetFieldType><bpmn:targetFieldName>hr:lastName</bpmn:targetFieldName><bpmn:sourceFieldName>FamilyName</bpmn:sourceFieldName><bpmn:sourceFieldType>xsd:string</bpmn:sourceFieldType></owl:NamedIndividual> <owl:NamedIndividualrdf:about=“&acme-bpmn-hr;iStartOnboardingMessageDefinition”> <rdf:typerdf:resource=“&bpmn;MessageEventDefinition”/> <bpmn:hasEventDefinitionsrdf:resource=“&acme-bpmn-hr;iFirstNameMappingElm”/><bpmn:hasEventDefinitionsrdf:resource=“&acme-bpmn-hr;iLastNameMappingElm”/></owl:NamedIndividual>

In FIG. 4, supplemental information 410 may be generated based on theontology instance 406. The supplemental information 410 may be relatedto functionalities 412 of the application 408 in the class ofapplications 404. As mentioned above with respect to FIG. 3, thesupplemental information 410 may include metadata transformed from theontology instance 406 and metadata inferred from the ontology instance406 using logic rules generated based on the class ontology 402. Thesupplemental information 410 may be provided as input to an executableprogram 409 at runtime so as to enable the application functionalities412 to be available via the executable program 409. As mentioned abovewith respect to FIG. 3, the programming interface generated based on theclass ontology 402 may be provided to the executable program 409 foraccessing the supplemental information 410 in the working memory atruntime.

Following the BPM class ontology example described in FIG. 13, theontology instance 406 defining the employee on-boarding process may beexpressed as triples in the working memory:

(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type, bpmn:Process)(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type, owl:NamedIndividual)(acme-bpmn-hr:iAcmeOnboardingProcess, bpmn:hasFlowElement, acme-bpmn-hr:iAcmeStartOnboarding) (acme-bpmn-hr:iAcmeStartOnboarding, rdf:type,bpmn:StartEvent) (acme-bpmn-hr:iAcmeStartOnboarding, rdf:type,owl:NamedIndividual) (acme-bpmn-hr:iAcmeStartOnboarding,bpmn:hasEventDefinitions, acme-bpmn-hr:iStartOnboardingMessageDefinition)(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type,bpmn:MessageEventDefinition)(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type,owl:NamedIndividual) (acme-bpmn-hr:iStartOnboardingMessageDefinition,bpmn:hasEventDefinitions, acme-bpmn- hr:iFirstNameMappingElm)(acme-bpmn-hr:iStartOnboardingMessageDefinition,bpmn:hasEventDefinitions, acme-bpmn- hr:iLastNameMappingElm)(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, bpmn:MappingElement)(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, owl:NamedIndividual)(acme-bpmn-hr:iFirstNameMappingElm, bpmn:sourceFieldName, “GivenName”)(acme-bpmn-hr:iFirstNameMappingElm, bpmn:sourceFieldType, “xsd:string”)(acme-bpmn-hr:iFirstNameMappingElm, bpmn:targetFieldName,“hr:firstName”) (acme-bpmn-hr:iFirstNameMappingElm,bpmn:targetFieldType, “xsd:string”) (acme-bpmn-hr:iLastNameMappingElm,rdf:type, bpmn:MappingElement) (acme-bpmn-hr:iLastNameMappingElm,rdf:type, owl:NamedIndividual) (acme-bpmn-hr:iLastNameMappingElm,bpmn:sourceFieldName, “FamilyName”) (acme-bpmn-hr:iLastNameMappingElm,bpmn:sourceFieldType, “xsd:string”) (acme-bpmn-hr:iLastNameMappingElm,bpmn:targetFieldName, “hr:lastName”) (acme-bpmn-hr:iLastNameMappingElm,bpmn:targetFieldType, “xsd:string”)At runtime, the executable program 409 may be using the BPM definitionabove along with the corresponding generated logic rules to have acomplete definition of the metadata defining the employee on-boardingapplication.

In order to increase the runtime performance of the executable program409 with the supplemental functionalities, it is possible to augment theontology instance 406 with entailments computed by the logic rulesgenerated based on the class ontology 402 to have more comprehensivesupplemental information. As an example, the employee on-boardingprocess may be augmented with entailments of the BPM class ontologyusing the generated logic rules to obtain the following supplementalinformation:

(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type, owl:Thing)(acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type,bpmn:FlowElementContainer) (acme-bpmn-hr:iAcmeOnboardingProcess,rdf:type, bpmn:Process) (acme-bpmn-hr:iAcmeOnboardingProcess, rdf:type,owl:NamedIndividual) (acme-bpmn-hr:iAcmeOnboardingProcess,bpmn:hasFlowElement, acme-bpmn- hr:iAcmeStartOnboarding)(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, owl:Thing)(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:Event)(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:FlowElement)(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:FlowNode)(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:MessageStartEvent)(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, bpmn:StartEvent)(acme-bpmn-hr:iAcmeStartOnboarding, rdf:type, owl:NamedIndividual)(acme-bpmn-hr:iAcmeStartOnboarding, bpmn:hasEventDefinitions, acme-bpmn-hr:iStartOnboardingMessageDefinition)(acme-bpmn-hr:iAcmeStartOnboarding, bpmn:hasMessageEventDefinitions,acme-bpmn- hr:iStartOnboardingMessageDefinition)(acme-bpmn-hr:iAcmeStartOnboarding, bpmn:topReactiveHelper,“iMessageStartEvent”) (acme-bpmn-hr:iAcmeStartOnboarding,top:consistent_on, bpmn:hasEventDefinitions)(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type, owl:Thing)(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type,bpmn:EventDefinition) (acme-bpmn-hr:iStartOnboardingMessageDefinition,rdf:type, bpmn:MessageEventDefinition)(acme-bpmn-hr:iStartOnboardingMessageDefinition, rdf:type,owl:NamedIndividual) (acme-bpmn-hr:iStartOnboardingMessageDefinition,bpmn:hasEventDefinitions, acme- bpmn-hr:iFirstNameMappingElm)(acme-bpmn-hr:iStartOnboardingMessageDefinition,bpmn:hasEventDefinitions, acme- bpmn-hr:iLastNameMappingElm)(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, owl:Thing)(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, bpmn:SupportingElement)(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, bpmn:MappingElement)(acme-bpmn-hr:iFirstNameMappingElm, rdf:type, owl:NamedIndividual)(acme-bpmn-hr:iFirstNameMappingElm, bpmn:sourceFieldName, “GivenName”)(acme-bpmn-hr:iFirstNameMappingElm, bpmn:sourceFieldType, “xsd:string”)(acme-bpmn-hr:iFirstNameMappingElm, bpmn:targetFieldName,“hr:firstName”) (acme-bpmn-hr:iFirstNameMappingElm,bpmn:targetFieldType, “xsd:string”) (acme-bpmn-hr:iLastNameMappingElm,rdf:type, owl:Thing) (acme-bpmn-hr:iLastNameMappingElm, rdf:type,bpmn:SupportingElement) (acme-bpmn-hr:iLastNameMappingElm, rdf:type,bpmn:MappingElement) (acme-bpmn-hr:iLastNameMappingElm, rdf:type,owl:NamedIndividual) (acme-bpmn-hr:iLastNameMappingElm,bpmn:sourceFieldName, “FamilyName”) (acme-bpmn-hr:iLastNameMappingElm,bpmn:sourceFieldType, “xsd:string”) (acme-bpmn-hr:iLastNameMappingElm,bpmn:targetFieldName, “hr:lastName”) (acme-bpmn-hr:iLastNameMappingElm,bpmn:targetFieldType, “xsd:string”)It is noted that the triples in bold are the inferred entailments(metadata), while the rest of the triples are metadata transformed fromthe BPM ontology instance.

The supplemental information with augmented metadata contains additionalinformation. For example, the named individualacme-bpmn-hr:McmeStartOnboarding is not only a bpmn:StartEvent as theasserted facts indicated, but also of type bpmn:MessageStartEvent as aconsequence of the equivalent class definition present in the ontology.This supplemental information corresponding to the employee on-boardingapplication functionalities may be stored in the working memory andbecome the metadata information used by the executable program 409 atruntime. As a result, in some embodiments, the generated logic rules mayno longer be needed by the executable program 409 once the metadatainformation is augmented with the inferred entailments. It may be neededwhen a new application is defined using a new instance of the BPM classontology.

FIG. 5 is a flowchart 500 of a method of providing supplementalfunctionalities for a computer program via ontology instances, inaccordance with some embodiments.

In an operation 502, a computer program associated with an ontology maybe caused to be run. The ontology may include information indicatingattributes for a set of applications (e.g., a class of BPM application).Operation 502 may be performed by one or more processors that are thesame as or similar to the processors 106, in accordance with one or moreembodiments.

In an operation 504, an instance of the ontology may be obtained. Theontology instance may correspond to an application of the set ofapplications. Operation 504 may be performed by an ontology managementsubsystem that is the same as or similar to the ontology managementsubsystem 112, in accordance with one or more embodiments.

In an operation 506, supplemental information for the computer programmay be generated based on the ontology instance. The supplementalinformation may be related to functionalities of the application.Operation 506 may be performed by a supplemental information generationsubsystem that is the same as or similar to the supplemental informationgeneration subsystem 114, in accordance with one or more embodiments.

In an operation 508, the supplemental information may be provided asinput to the computer program to enable the functionalities of theapplication to be available via the computer program. Operation 508 maybe performed by one or more processors that are the same as or similarto the processors 106, in accordance with one or more embodiments.

It should be understood that in some embodiments, operations 504-508 maybe repeated to enable different functionalities of another applicationin the set of application to be available via the computer program. Forexample, another ontology instance corresponding to the otherapplication may be obtained, and another supplemental informationrelated to the different functionalities may be generated based on theother ontology instance and provided as input to the computer program.

FIG. 6 is a flowchart 600 of a method of generating a programminginterface and logic rules based on a class ontology, in accordance withsome embodiments.

In an operation 602, an ontology associated with a class of applicationsmay be obtained. Operation 602 may be performed by an ontology definingcomponent that is the same as or similar to the ontology definingcomponent 202, in accordance with one or more embodiments.

In an operation 604, a freeze may be assigned to the ontology thatdisables further modification of the ontology. In some embodiments, thefreeze may be assigned once the ontology has been completed andvalidated to ensure the consistency of the ontology. Operation 604 maybe performed by an ontology validation component that is the same as orsimilar to the ontology validation component 204, in accordance with oneor more embodiments.

In an operation 606, class information may be extracted from theontology. The class information may include, for example, classstructures, data properties associated with each class, and therelationships between classes. Operation 606 may be performed by aprogramming interface generation component that is the same as orsimilar to the programming interface generation component 206, inaccordance with one or more embodiments.

In an operation 608, a programming interface may be generated based onthe class information. The programming interface may be in the form ofcomputer code in a programming language and may be used by a computerprogram (e.g., the computer program of FIG. 5) for accessing metadatainformation stored in the working memory. Operation 608 may be performedby a programming interface generation component that is the same as orsimilar to the programming interface generation component 206, inaccordance with one or more embodiments.

In an operation 610, axiom information may be extracted from theontology. Operation 610 may be performed by a logic rule generationcomponent that is the same as or similar to the logic rule generationcomponent 208, in accordance with one or more embodiments.

In an operation 612, logic rules may be generated based on the axiominformation. The logic rules may be used to infer additional metadata,e.g., entailments on the objects of the ontology. Operation 612 may beperformed by a logic rule generation component that is the same as orsimilar to the logic rule generation component 208, in accordance withone or more embodiments.

In an operation 614, logic rules may be augmented with runtime rules ofthe computer program. The augmented rules may be used for executing thecomputer program at runtime. Operation 614 may be performed by a logicrule generation component that is the same as or similar to the logicrule generation component 208, in accordance with one or moreembodiments.

Functionalities Provided Via Domain-Specific and General OntologyInstances

In addition to a class ontology describing a class of application, aparticular application often needs to access domain-specificinformation. The traditional approach to add domain-specific informationto an application is to have programmers write application codeembodying the domain-specific knowledge in some programming language, orto have the application code be generated automatically based on someinformation gathered from a business analyst or a domain expert. FIGS.7-9 illustrate an example of providing supplemental functionalities fora computer program (e.g., an executable program or other computerprogram) via a domain-specific ontology and a general ontology instance.That is, a computer program may be specialized in a particular domain ofinterest using a domain-specific ontology without changing the computercode of the computer program.

As shown in FIG. 7, a general ontology 702 is obtained. The generalontology 702 may be a domain meta model ontology designed to describethe class structure of any domain-specific ontologies 704. Thedomain-specific ontologies 704 may be associated with domains ofinterest 706, such as the ones listed in Table 1. The general ontology702 may not be modified and may have no dependency on anydomain-specific ontologies 704. This may become a known and explicitstructure used by an executable program 709 to interpret the structureof a particular domain-specific ontology 710. An example generalontology (domain meta model ontology) has been shown above with respectto FIG. 14, and an example domain-specific ontology 710 in the humanresource domain has been shown above with respect to FIG. 15. Thegeneral ontology in FIG. 14 can be used to interpret any domain-specificontologies 704, including the human resource domain ontology in FIG. 15.

As mentioned above, both class information and axiom information may beextracted from the general ontology 702 and used to generate theprogramming interface and logic rules, respectively. Similarly, axiominformation may be extracted from the domain-specific ontology 710 andused to generate the specific logic rules. The specific logic rules maybe applied to an instance 708 of the general ontology 702 by theexecutable program 709. Following the human resource domain ontologyexample described in FIG. 15, the axioms of the human resource domainontology may be captured in logic rules that are generated automaticallyfrom the human resource domain ontology using a computer program. Forexample, the axiom information includes axioms for the classBoardDirector. The restriction that a BoardDirector must have a role oftype BoardDirectorRole is expressed as:

# hr:hasRole some hr:BoardDirectorRole [n=hr12, s=100]: (?s rdf:typehr:BoardDirector).(?s hr:hasRole ?o).(?o rdf:type hr:BoardDirectorRole)−> (?s top:consistent_on hr:hasRole) [n=hr13, s=10]: (?s rdf:typehr:BoardDirector).not(?s top:consistent_on hr:hasRole) −> (?s rdf:typeowl:Nothing)The first rule indicates that a BoardDirector with a role ofBoardDirectorRole is a consistent individual with regard to the propertyhasRole. The second rule indicates the complement of the first rule,meaning that a BoardDirector that does not have a consistentrelationship on the property hasRole is an inconsistent individual(indicated as a member of Nothing).

Referring back to FIG. 7, the instance 708 of the general ontology 702may be obtained. The general ontology instance 708 may be based on thedomain-specific ontology 710 and correspond to an application 712 in thedomain of interest associated with the domain-specific ontology 710.Supplemental information 714 may be generated for the executable program709 based on the general ontology instance 708. The supplementalinformation 714 may be related to the functionalities 716 of theapplication 712. The supplemental information 714 may be provided asinput to the executable program 709 at runtime so as to enable theapplication functionalities 716 to be available via the executableprogram 709. As mentioned above with respect to FIG. 3, the programminginterface generated based on the general ontology 702 may be provided tothe executable program 709 for accessing the supplemental information714 in a working memory at runtime. The executable program 709 may alsoinclude the rule engine 310 to execute the generated logic rulesassociated with programming interface and the domain-specific ontology710. At runtime, the executable program 709 may be provided with thesupplemental information 714 (e.g., domain-specific metadatainformation). This supplemental information 714 may be accessedprogrammatically using the generated programming interface (e.g., classstructure). Logic rules may be supplied for the executable program 709without the need to modify the computer code of the executable program.As mentioned above, the runtime rules govern the execution of theexecutable program 709 and do not alter the ontological definition ofthe general and domain-specific ontologies 702 and 710. The runtimerules may be used in conjunction with the generated logic rules from theaxioms of the domain-specific ontology 710 and applied on the inputtedsupplemental information 714.

Following the domain meta model ontology example in FIG. 14 and thehuman resource domain ontology example described in FIG. 15, theontology instance 708 is an instance of the example domain meta modelontology, the domain-specific ontology 710 is the example human resourcedomain ontology, and the application 712 is a human resourceapplication. The example human resource domain ontology may be describedusing the instance of the domain meta model ontology. The domain metamodel ontology can be used to describe any domain-specific ontology,which is an important productivity gain since the class of applicationsonly needs to know the structure of the domain meta model ontology,using the generated classes in any programming language, to discover anydomain-specific ontology without the need to change the executableprogram 709. As an example, the following is an extract of the domainmeta model ontology instance generated automatically using a computerprogram with the example human resource domain ontology as input:

(i_hr:BoardDirector, rdf:type, domain:ClassMetadata)(i_hr:BoardDirector, domain:className, “hr:BoardDirector”)(i_hr:BoardDirector, domain:directSubClassOf, i_hr:Person)(i_hr:BoardDirector, domain:allProperties,i_hr:BoardDirector-hr:firstName) (i_hr:BoardDirector,domain:allProperties, i_hr:BoardDirector-hr:hasRole)(i_hr:BoardDirector, domain:allProperties,i_hr:BoardDirector-hr:lastName) (i_hr:BoardDirector-hr:hasRole,rdf:type, domain:PropertyMetadata) (i_hr:BoardDirector-hr:hasRole,domain:propertyName, “hr:hasRole”) (i_hr:BoardDirector-hr:hasRole,domain:range, “hr:Role”) (i_hr:BoardDirector-hr:hasRole,domain:hasSomeValueFromRestriction, “hr:BoardDirectorRole”)(i_hr:BoardDirector-hr:hasRole, domain:isFunctionalProperty, “0”)(i_hr:BoardDirector-hr:hasRole, domain:isObjectProperty, “1”)In the extract above, the class hr:BoardDirector is described using aninstance of domain:ClassMetadata named i_hr:BoardDirector. The propertyhr:hasRole is described using an instance of domain:PropertyMetadata andthe restriction that a BoardDirector must have a role with value fromthe class hr:BoardDirectorRole has been captured.

The metadata describing the human resource domain ontology may beaugmented with entailments from the domain meta model ontology (inferredmetadata). This augments the metadata information with the inferredclass structure. Using the human resource domain ontology as input, theaugmented metadata information obtained after applying the logic rulesgenerated based on the domain meta model ontology is:

i_hr:BoardDirector, rdf:type, owl:Thing) (i_hr:BoardDirector, rdf:type,domain:DomainMetaModel) (i_hr:BoardDirector, rdf:type,domain:ClassMetadata) (i_hr:BoardDirector, domain:className,“hr:BoardDirector”) (i_hr:BoardDirector, domain:directSubClassOf,i_hr:Person) (i_hr:BoardDirector, domain:subClassOf, i_owl:Thing)(i_hr:BoardDirector, domain:subClassOf, i_hr:ResourceManagement)(i_hr:BoardDirector, domain:subClassOf, i_hr:Person)(i_hr:BoardDirector, domain:allProperties,i_hr:BoardDirector-hr:firstName) (i_hr:BoardDirector,domain:allProperties, i_hr:BoardDirector-hr:hasRole)(i_hr:BoardDirector, domain:allProperties,i_hr:BoardDirector-hr:lastName) (i_hr:BoardDirector-hr:hasRole,rdf:type, owl:Thing) (i_hr:BoardDirector-hr:hasRole, rdf:type,domain:DomainMetaModel) (i_hr:BoardDirector-hr:hasRole, rdf:type,domain:PropertyMetadata) (i_hr:BoardDirector-hr:hasRole,domain:propertyName, “hr:hasRole”) (i_hr:BoardDirector-hr:hasRole,domain:range, “hr:Role”) (i_hr:BoardDirector-hr:hasRole,domain:hasSomeValueFromRestriction, “hr:BoardDirectorRole”)(i_hr:BoardDirector-hr:hasRole, domain:isFunctionalProperty, “0”)(i_hr:BoardDirector-hr:hasRole, domain:isObjectProperty, “1”)The inferred entailments (additional supplemental information) areindicated in bold above.

In some embodiments, the expressibility of the executable program may beaugmented by integrating the general ontology into a class ontologydescribing a class of applications. The expressibility of the resultingexecutable program can be increased by integrating the general ontology(e.g., a domain meta model ontology) with the class ontology. Thisintegration may be done by importing the general ontology into the classontology in order to specify domain-specific dependency.

As an example, it may be desired to inform the mapping algorithm ofaxioms present in the target elements, e.g., if the property is afunctional property or the ability to ensure the validity of the type isused in the range of the target element. Specifically, consider theequivalent specification of the above-mentioned example of an employeeon-boarding process using the instance of the domain metal modelontology as metadata describing the human resource domain ontologyexample:

# # Metadata describing Acme Employee On-Boarding Process #(acme-bpmn-hr2:iAcmeOnboardingProcess, rdf:type, bpmn2:Process)(acme-bpmn-hr2:iAcmeOnboardingProcess, rdf:type, owl:NamedIndividual)(acme-bpmn-hr2:iAcmeOnboardingProcess, bpmn2:hasFlowElement, acme-bpmn-hr2:iOnboardingStartEvent) (acme-bpmn-hr2:iOnboardingStartEvent,rdf:type, bpmn2:StartEvent) (acme-bpmn-hr2:iOnboardingStartEvent,rdf:type, owl:NamedIndividual) (acme-bpmn-hr2:iOnboardingStartEvent,bpmn2:hasEventDefinitions, acme-bpmn-hr2:iOnboardingStartEventDefinition)(acme-bpmn-hr2:iOnboardingStartEventDefinition, rdf:type,bpmn2:MessageEventDefinition)(acme-bpmn-hr2:iOnboardingStartEventDefinition, rdf:type,owl:NamedIndividual) (acme-bpmn-hr2:iOnboardingStartEventDefinition,bpmn2:hasMappingElements, acme-bpmn-hr2:iOnboardingEmployeeMappingElement)(acme-bpmn-hr2:iOnboardingEmployeeMappingElement, rdf:type,bpmn2:MappingElement) (acme-bpmn-hr2:iOnboardingEmployeeMappingElement,rdf:type, owl:NamedIndividual)(acme-bpmn-hr2:iOnboardingEmployeeMappingElement,bpmn2:hasDomainEntityMappingDefinition,acme-bpmn-hr2:iEmployeeMappingDefinition)(acme-bpmn-hr2:iEmployeeMappingDefinition, rdf:type,domain:DomainEntityMappingDefinition)(acme-bpmn-hr2:iEmployeeMappingDefinition, rdf:type,owl:NamedIndividual) (acme-bpmn-hr2:iEmployeeMappingDefinition,domain:entityClassMetadata, i_hr:Employee)(acme-bpmn-hr2:iEmployeeMappingDefinition,domain:hasDomainPropertyMappingDefinitions, acme-bpmn-hr2:iFirstNameMappingDefinition)(acme-bpmn-hr2:iEmployeeMappingDefinition,domain:hasDomainPropertyMappingDefinitions, acme-bpmn-hr2:iLastNameMappingDefinition)(acme-bpmn-hr2:iFirstNameMappingDefinition, rdf:type,domain:DomainPropertyMappingDefinition)(acme-bpmn-hr2:iFirstNameMappingDefinition, rdf:type,owl:NamedIndividual) (acme-bpmn-hr2:iFirstNameMappingDefinition,domain:sourceFieldName, “GivenName”)(acme-bpmn-hr2:iFirstNameMappingDefinition, domain:sourceFieldType,“xsd:string”) (acme-bpmn-hr2:iFirstNameMappingDefinition,domain:targetPropertyMetadata, i_hr:Employee-firstName)(acme-bpmn-hr2:iLastNameMappingDefinition, rdf:type,domain:DomainPropertyMappingDefinition)(acme-bpmn-hr2:iLastNameMappingDefinition, rdf:type,owl:NamedIndividual) (acme-bpmn-hr2:iLastNameMappingDefinition,domain:sourceFieldName, “FamilyName”)(acme-bpmn-hr2:iLastNameMappingDefinition, domain:sourceFieldType,“xsd:string”) (acme-bpmn-hr2:iLastNameMappingDefinition,domain:targetPropertyMetadata, i_hr:Employee-lastName) # # Metadatadescribing HR sample Domain Ontology # (i_hr:Employee, rdf:type,domain:ClassMetadata) (i_hr:Employee, rdf:type, owl:NamedIndividual)(i_hr:Employee, domain:className, “hr:Employee”) (i_hr:Employee,domain:directProperties, i_hr:Employee-firstName) (i_hr:Employee,domain:directProperties, i_hr:Employee-lastName)(i_hr:Employee-firstName, rdf:type, domain:PropertyMetadata)(i_hr:Employee-firstName, rdf:type, owl:NamedIndividual)(i_hr:Employee-firstName, domain:propertyName, “hr:firstName”)(i_hr:Employee-firstName, domain:range, “xsd:string”)(i_hr:Employee-firstName, domain:isFunctionalProperty, “1”)(i_hr:Employee-firstName, domain:isObjectProperty, “0”)(i_hr:Employee-lastName, rdf:type, domain:PropertyMetadata)(i_hr:Employee-lastName, rdf:type, owl:NamedIndividual)(i_hr:Employee-lastName, domain:propertyName, “hr:lastName”)(i_hr:Employee-lastName, domain:range, “xsd:string”)(i_hr:Employee-lastName, domain:isFunctionalProperty, “1”)(i_hr:Employee-lastName, domain:isObjectProperty, “0”)In the domain:DomainEntityMappingDefinition the Domain Entity isspecified as an instance of domain:ClassMetadata (range of propertydomain: entityClassMetadata is of type domain:ClassMetadata; seehighlights above in bold). Also, the Domain Property Mapping Definition(instances of domain:DomainPropertyMappingDefinition) has an instance ofdomain:PropertyMetadata for range of domain:targetPropertyMetadata (seehighlights above in bold). This provides a rich metadata description ofthe target domain-specific entities with full access to axioms andrestrictions providing the ability of the executable program to enforceor validate them at runtime.

FIG. 8 is a flowchart 800 of a method of providing supplementalfunctionalities for an executable program via a domain-specific ontologyand an instance of a general ontology, in accordance with someembodiments.

In an operation 802, a computer program may be caused to be run.Operation 802 may be performed by one or more processors that are thesame as or similar to the processors 106, in accordance with one or moreembodiments.

In an operation 804, a general ontology and a domain-specific ontologymay be obtained. The domain-specific ontology may be associated with adomain of interest, and the general ontology can be used to interpretthe domain-specific ontology. Operation 804 may be performed by anontology management subsystem that is the same as or similar to theontology management subsystem 112, in accordance with one or moreembodiments.

In an operation 806, an instance of the general ontology may beobtained. The general ontology instance may be based on thedomain-specific ontology and correspond to an application associatedwith the domain of interest. Operation 806 may be performed by anontology management subsystem that is the same as or similar to theontology management subsystem 112, in accordance with one or moreembodiments.

In an operation 808, supplemental information for the computer programmay be generated based on the general ontology instance. Thesupplemental information may be related to functionalities of theapplication. Operation 808 may be performed by a supplementalinformation generation subsystem that is the same as or similar to thesupplemental information generation subsystem 114, in accordance withone or more embodiments.

In an operation 810, the supplemental information may be provided asinput to the computer program to enable the functionalities of theapplication to be available via the computer program. Operation 810 maybe performed by one or more processors that are the same as or similarto the processors 106, in accordance with one or more embodiments.

It should be understood that, in some embodiments, operations 804-810may be repeated to enable different functionalities of anotherapplication in a different domain of interest to be available via thecomputer program. For example, another domain-specific ontology in thedifferent domain of interest and another general ontology instancecorresponding to the other application may be obtained, and anothersupplemental information related to the different functionalities may begenerated based on the other general ontology instance anddomain-specific ontology and provided as input to the computer program.

FIG. 9 is a flowchart 900 of a method of generating a programminginterface and logic rules based on a domain-specific ontology and ageneral ontology instance, in accordance with some embodiments.

In an operation 902, a general ontology and a domain-specific ontologymay be obtained. Operation 902 may be performed by an ontology definingcomponent that is the same as or similar to the ontology definingcomponent 202, in accordance with one or more embodiments.

In an operation 904, a freeze may be assigned to the general ontologyand domain-specific ontology that disables further modification of theontologies. In some embodiments, the freeze may be assigned once anontology has been completed and validated to ensure the consistency ofthe ontology. Operation 904 may be performed by an ontology validationcomponent that is the same as or similar to the ontology validationcomponent 204, in accordance with one or more embodiments.

In an operation 906, class information may be extracted from the generalontology. The class information may include, for example, classstructures, data properties associated with each class, and therelationships between classes. Operation 906 may be performed by aprogramming interface generation component that is the same as orsimilar to the programming interface generation component 206, inaccordance with one or more embodiments.

In an operation 908, a programming interface may be generated based onthe class information of the general ontology. The programming interfacemay be in the form of computer code in a programming language and may beused by a computer program (e.g., the computer program of FIG. 8) foraccessing metadata information stored in the working memory. Operation908 may be performed by a programming interface generation componentthat is the same as or similar to the programming interface generationcomponent 206, in accordance with one or more embodiments.

In an operation 910, axiom information may be extracted from the generalontology. Operation 910 may be performed by a logic rule generationcomponent that is the same as or similar to the logic rule generationcomponent 208, in accordance with one or more embodiments.

In an operation 912, general logic rules may be generated based on theaxiom information of the general ontology. The general logic rules maybe used to infer additional metadata, e.g., entailments on the objectsof the domain-specific ontology. Operation 912 may be performed by alogic rule generation component that is the same as or similar to thelogic rule generation component 208, in accordance with one or moreembodiments.

In an operation 914, axiom information may be extracted from thedomain-specific ontology. Operation 914 may be performed by a logic rulegeneration component that is the same as or similar to the logic rulegeneration component 208, in accordance with one or more embodiments.

In an operation 916, specific logic rules may be generated based on theaxiom information of the domain-specific ontology. The specific logicrules may be applied to manipulate the supplemental information by thecomputer program. Operation 916 may be performed by a logic rulegeneration component that is the same as or similar to the logic rulegeneration component 208, in accordance with one or more embodiments.

In an operation 918, general and specific logic rules may be augmentedwith runtime rules of the computer program. The augmented rules may beused for executing the computer program at runtime. Operation 918 may beperformed by a logic rule generation component that is the same as orsimilar to the logic rule generation component 208, in accordance withone or more embodiments.

Functionalities Provided Via Domain-Specific and Class OntologyInstances

One aspect of this invention by which one can generate a class ofapplications from a class ontology described in FIGS. 4-6 can becombined with the other aspect of this invention described in FIGS. 7-9to generate a specialized application with domain-specific knowledgethat belongs to a class of applications.

As an example, an application for on-boarding new employees by the humanresource department of an organization is an application that belongs tothe class of BPM applications. This application is specialized withhuman resource domain knowledge. The specialization of the applicationis two-fold: 1) the new employee on-boarding business process is anapplication that belongs to the class of BPM applications, and 2) theinclusion of human resource domain-specific knowledge specializes theon-boarding process by using data elements or attributes that arespecific to an organization or industry. Combining a class ofapplications associated with a class ontology with a domain-specificontology may result in a semantically informed computer program (e.g.,an executable program) that is a programmatic representation of theclass of applications applied to the specific domain by the underlyingontologies.

FIGS. 10-12 illustrate an example of providing supplementalfunctionalities for a computer program (e.g., an executable program orother computer program) via a domain-specific ontology and a classontology instance. As shown in FIG. 10, an ontology 1002 (a classontology) is obtained. The class ontology 1002 may include informationindicating attributes for a class of applications 1004. The class ofapplications 1004 may include the ones listed in Table 1. On the otherhand, a domain-specific ontology 1014 may be selected from a set ofdomain-specific ontologies 1006, which are associated with a set ofdomains of interest 1008, such as such as the ones listed in Table 1. Anexample BPM class ontology has been shown above with respect to FIG. 13,and an example human resource domain-specific ontology has been shownabove with respect to FIG. 15.

As mentioned above, both class information and axiom information may beextracted from the class ontology 1002 and used to generate theprogramming interface and logic rules, respectively. Similarly, axiominformation may be extracted from the domain-specific ontology 1014 andused to generate the specific logic rules. The specific logic rules maybe applied to an instance 1010 of the class ontology 1002 by anexecutable program 1009. The class ontology instance 1010 may be basedon the domain-specific ontology 1014 and correspond to an application1012 of the class of applications 1004 that is associated with thedomain of interest.

Supplemental information 1016 may be generated for the executableprogram 1009 based on the class ontology instance 1010. The supplementalinformation 1016 may be related to the functionalities 1018 of theapplication 1012. The supplemental information 1016 may be provided asinput to the executable program 1009 at runtime so as to enable theapplication functionalities 1018 to be available via the executableprogram 1009. As indicated above with respect to FIG. 3, the programminginterface generated based on the class ontology 1002 may be provided tothe executable program 1009 for accessing the supplemental information1016 in a working memory at runtime. The executable program 1009 mayalso include the rule engine 310 to execute the generated logic rulesassociated with programming interface and the domain-specific ontology1014. At runtime, the executable program 1009 may be provided with thesupplemental information 1016 (e.g., domain-specific metadatainformation). This supplemental information 1016 may be accessedprogrammatically using the generated programming interface (e.g., classstructure). Logic rules may be supplied for the executable program 1009without the need to modify the computer code of the executable program1009. As mentioned above, the runtime rules govern the execution of theexecutable program 1009 and do not alter the ontological definition ofthe class and domain-specific ontologies 1002, 1014. The runtime rulesmay be used in conjunction with the generated logic rules from theaxioms of the domain-specific ontology 1014 and applied on the inputsupplemental information 1016.

FIG. 11 is a flowchart 1100 of a method of providing supplementalfunctionalities for a computer program (e.g., an executable program orother computer program) via a domain-specific ontology and an instanceof an ontology describing a class of applications, in accordance withsome embodiments.

In an operation 1102, a computer program associated with an ontology maybe caused to be run. The ontology may include information indicatingattributes for a set of applications (a class ontology for a class ofapplications). Operation 1102 may be performed by one or more processorsthat are the same as or similar to the processors 106, in accordancewith one or more embodiments.

In an operation 1104, a domain-specific ontology may be obtained. Thedomain-specific ontology may be associated with a domain of interest.Operation 1104 may be performed by an ontology management subsystem thatis the same as or similar to the ontology management subsystem 112, inaccordance with one or more embodiments.

In an operation 1106, an instance of the class ontology may be obtained.The class ontology instance may be based on the domain-specific ontologyand correspond to an application of the set of applications that isassociated with the domain of interest. Operation 1106 may be performedby an ontology management subsystem that is the same as or similar tothe ontology management subsystem 112, in accordance with one or moreembodiments.

In an operation 1108, supplemental information for the computer programmay be generated based on the class ontology instance. The supplementalinformation may be related to functionalities of the application.Operation 1108 may be performed by a supplemental information generationsubsystem that is the same as or similar to the supplemental informationgeneration subsystem 114, in accordance with one or more embodiments.

In an operation 1110, the supplemental information may be provided asinput to the computer program to enable the functionalities of theapplication to be available via the computer program. Operation 1110 maybe performed by one or more processors that are the same as or similarto the processors 106, in accordance with one or more embodiments.

It should be understood that, in some embodiments, operations 1106-1110may be repeated to enable different functionalities of anotherapplication in the set of applications to be available via the computerprogram. For example, another class ontology instance corresponding tothe other application may be obtained, and other supplementalinformation related to the different functionalities may be generatedbased on the other class ontology instance and the domain-specificontology and provided as input to the computer program.

FIG. 12 is a flowchart 1200 of a method of generating a programminginterface and logic rules based on a domain-specific ontology and aclass ontology instance, in accordance with some embodiments.

In an operation 1202, a class ontology and a domain-specific ontologymay be obtained. Operation 1202 may be performed by an ontology definingcomponent that is the same as or similar to the ontology definingcomponent 202, in accordance with one or more embodiments.

In an operation 1204, a freeze may be assigned to the class ontology anddomain-specific ontology that disables further modification of theontologies. In some embodiments, the freeze may be assigned once anontology has been completed and validated to ensure the consistency ofthe ontology. Operation 1204 may be performed by an ontology validationcomponent that is the same as or similar to the ontology validationcomponent 204, in accordance with one or more embodiments.

In an operation 1206, class information may be extracted from the classontology. The class information may include, for example, classstructures, data properties associated with each class, and therelationships between classes. Operation 1206 may be performed by aprogramming interface generation component that is the same as orsimilar to the programming interface generation component 206, inaccordance with one or more embodiments.

In an operation 1208, a programming interface may be generated based onthe class information of the class ontology. The programming interfacemay be in the form of computer code in a programming language to be usedby a computer program (e.g., the computer program of FIG. 11) foraccessing metadata information stored in the working memory. Operation1208 may be performed by a programming interface generation componentthat is the same as or similar to the programming interface generationcomponent 206, in accordance with one or more embodiments.

In an operation 1210, axiom information may be extracted from the classontology. Operation 1210 may be performed by a logic rule generationcomponent that is the same as or similar to the logic rule generationcomponent 208, in accordance with one or more embodiments.

In an operation 1212, logic rules may be generated based on the axiominformation of the class ontology. The logic rules may be used to inferadditional metadata, e.g., entailments on the objects of thedomain-specific ontology. Operation 1212 may be performed by a logicrule generation component that is the same as or similar to the logicrule generation component 208, in accordance with one or moreembodiments.

In an operation 1214, axiom information may be extracted from thedomain-specific ontology. Operation 1214 may be performed by a logicrule generation component that is the same as or similar to the logicrule generation component 208, in accordance with one or moreembodiments.

In an operation 1216, specific logic rules may be generated based on theaxiom information of the domain-specific ontology. The specific logicrules may be applied to manipulate the supplemental information by thecomputer program. Operation 1216 may be performed by a logic rulegeneration component that is the same as or similar to the logic rulegeneration component 208, in accordance with one or more embodiments.

In an operation 1218, logic rules and specific logic rules may beaugmented with runtime rules of the computer program. The augmentedrules may be used for executing the computer program at runtime.Operation 1218 may be performed by a logic rule generation componentthat is the same as or similar to the logic rule generation component208, in accordance with one or more embodiments.

The methods described herein may be implemented in one or moreprocessing devices (e.g., a digital processor, an analog processor, adigital circuit designed to process information, an analog circuitdesigned to process information, a state machine, and/or othermechanisms for electronically processing information). The one or moreprocessing devices may include one or more devices executing some or allof the operations of the methods in response to instructions storedelectronically on an electronic storage medium. The one or moreprocessing devices may include one or more devices configured throughhardware, firmware, and/or software to be specifically designed forexecution of one or more of the operations of the methods.

As used throughout this application, terms describing conditionalrelationships, e.g., “in response to X, Y,” “upon X, Y,” “if X, Y,”“when X, Y,” and the like, encompass causal relationships in which theantecedent is a necessary causal condition, the antecedent is asufficient causal condition, or the antecedent is a contributory causalcondition of the consequent, e.g., “state X occurs upon condition Yobtaining” is generic to “X occurs solely upon Y” and “X occurs upon Yand Z.” Such conditional relationships are not limited to consequencesthat instantly follow the antecedent obtaining, as some consequences maybe delayed, and in conditional statements, antecedents are connected totheir consequents, e.g., the antecedent is relevant to the likelihood ofthe consequent occurring. Statements in which a plurality of attributesor functions are mapped to a plurality of objects (e.g., one or moreprocessors performing steps A, B, C, and D) encompasses both all suchattributes or functions being mapped to all such objects and subsets ofthe attributes or functions being mapped to subsets of the attributes orfunctions (e.g., both all processors each performing steps A-D, and acase in which processor 1 performs step A, processor 2 performs step Band part of step C, and processor 3 performs part of step C and step D),unless otherwise indicated. Further, unless otherwise indicated,statements that one value or action is “based on” another condition orvalue encompass both instances in which the condition or value is thesole factor and instances in which the condition or value is one factoramong a plurality of factors. Unless otherwise indicated, statementsthat “each” instance of some collection have some property should not beread to exclude cases where some otherwise identical or similar membersof a larger collection do not have the property, i.e., each does notnecessarily mean each and every.

Although the present invention has been described in detail for thepurpose of illustration based on what are currently considered to be themost practical and preferred embodiments, it is to be understood thatsuch detail is solely for that purpose and that the invention is notlimited to the disclosed embodiments, but, on the contrary, is intendedto cover modifications and equivalent arrangements that are within thescope of the appended claims. For example, it is to be understood thatthe present invention contemplates that, to the extent possible, one ormore features of any embodiment can be combined with one or morefeatures of any other embodiment.

What is claimed is:
 1. A method of providing supplementalfunctionalities to an executable program via an ontology instance, themethod comprising: causing, by a computer system, an executable programto be run; obtaining, by a computer system, a general ontology and adomain-specific ontology, wherein the domain-specific ontology isassociated with a domain of interest, and the executable program isconfigured to use at least a portion of the general ontology tointerpret the domain-specific ontology; validating, by a computersystem, the general ontology; obtaining, by a computer system, aninstance of the general ontology, wherein the general ontology instanceis based on the domain-specific ontology and corresponds to anapplication associated with the domain of interest; generating, by acomputer system, based on the general ontology instance, supplementalinformation for the executable program, wherein the supplementalinformation is related to one or more functionalities of the applicationto be added to the executable program; and providing, by a computersystem, the supplemental information as input to the executable program,wherein the supplemental information, at least in part, causes the oneor more functionalities of the application to be made available via theexecutable program.
 2. The method of claim 1, further comprising:obtaining, by a computer system, another domain-specific ontology,wherein the other domain-specific ontology is associated with anotherdomain of interest, and the executable program is configured to use atleast a portion of the general ontology to interpret the otherdomain-specific ontology; obtaining, by a computer system, anotherinstance of the general ontology, wherein the other general ontologyinstance is based on the other domain-specific ontology and correspondsto another application associated with the other domain of interest;generating, by a computer system, based on the other general ontologyinstance, another supplemental information for the executable program,wherein the other supplemental information is related to one or morefunctionalities of the other application to be added to the providing,by a computer system, the other supplemental information as input to theexecutable program, wherein the other supplemental information, at leastin part, causes the one or more functionalities of the other applicationbe made available via the executable program.
 3. The method of claim 1,wherein the one or more functionalities are made available via theexecutable program without recompiling the executable program.
 4. Themethod of claim 1, wherein the executable program obtains thesupplemental information from working memory at runtime.
 5. The methodof claim 1, further comprising: assigning, by a computer system, afreeze to the general ontology and the domain-specific ontology thatdisables further modification to the general ontology and thedomain-specific ontology.
 6. The method of claim 1, further comprising:extracting, by a computer system, class information from the generalontology; and generating, by a computer system, a programming interfacebased on the class information, wherein the programming interface allowsthe executable program to access the supplemental information.
 7. Themethod of claim 1, further comprising: extracting, by a computer system,axiom information from the general ontology, and generating, by acomputer system, a set of general logic rules based on the axiominformation of the general ontology, wherein at least part of thesupplemental information is generated based on the set of general logicrules.
 8. The method of claim 7, further comprising: extracting, by acomputer system, axiom information from the domain-specific ontology,and generating, by a computer system, a set of specific logic rulesbased on the axiom information of the domain-specific ontology.
 9. Themethod of claim 8, wherein the executable program includes a set ofruntime rules that control the execution of the executable program, themethod further comprising: augmenting, by a computer system, the set ofgeneral logic rules and the set of specific logic rules with the set ofruntime rules to enable the one or more functionalities of theapplication to be available via the executable program.
 10. The methodof claim 1, wherein the general ontology instance represents metadatainformation from the domain-specific ontology.
 11. The method of claim7, further comprising: validating, by a computer system, the generalontology instance based on the set of general logic rules; andassigning, by a computer system, a freeze to the general ontologyinstance that disables further modification to the supplementalinformation when the general ontology instance has been validated. 12.The method of claim 1, wherein the supplemental information includes adata model for encoding metadata and knowledge on the Semantic Web usingfacts expressed as triples.
 13. A system for providing supplementalfunctionalities for an executable program via an ontology instance, thesystem comprising: a computer system comprising one or more processorsprogrammed with computer program instructions which, when executed,cause the computer system to: cause an executable program to be run;obtain a general ontology and a domain-specific ontology, wherein thedomain-specific ontology is associated with a domain of interest, andthe executable program is configured to use at least a portion of thegeneral ontology to interpret the domain-specific ontology; validate thegeneral ontology; obtain an instance of the general ontology, whereinthe general ontology instance is based on the domain-specific ontologyand corresponds to an application associated with the domain ofinterest; generate, based on the general ontology instance, supplementalinformation for the executable program, wherein the supplementalinformation is related to one or more functionalities of the applicationto be added to the executable program; and provide the supplementalinformation as input to the executable program, wherein the supplementalinformation, at least in part, causes the one or more functionalities ofthe application be made available via the executable program.
 14. Thesystem of claim 13, wherein the computer system is further caused to:obtain another domain-specific ontology, wherein the otherdomain-specific ontology is associated with another domain of interest,and the executable program is configured to use at least a portion ofthe general ontology to interpret the other domain-specific ontology;obtain another instance of the general ontology, wherein the othergeneral ontology instance is based on the other domain-specific ontologyand corresponds to another application associated with the other domainof interest; generate, based on the other general ontology instance,another supplemental information for the executable program, wherein theother supplemental information is related to one or more functionalitiesof the other application to be added to the executable program; andprovide the other supplemental information as input to the executableprogram, wherein the supplemental information, at least in part, causesthe one or more functionalities of the application be made available viathe executable program.
 15. The system of claim 13, wherein the one ormore functionalities are made available via the executable programwithout recompiling the executable program.
 16. The system of claim 13,wherein the executable program obtains the supplemental information fromworking memory at runtime.
 17. The system of claim 13, wherein thecomputer system is further caused to assign a freeze to the generalontology and the domain-specific ontology that disables furthermodification to the general ontology and the domain-specific ontology.18. The system of claim 13, wherein the computer system is furthercaused to: extract class information from the general ontology; andgenerate a programming interface based on the class information, whereinthe programming interface allows the executable program to access thesupplemental information.
 19. A method of providing supplementalfunctionalities to an executable program via an ontology instance, themethod comprising: causing, by a computer system, an executable programto be run; obtaining, by a computer system, a general ontology and adomain-specific ontology, wherein the domain-specific ontology isassociated with a domain of interest, and the executable program isconfigured to use at least a portion of the general ontology tointerpret the domain-specific ontology; validating, by a computersystem, the general ontology; obtaining, by a computer system, aninstance of the general ontology, wherein the general ontology instanceis based on the domain-specific ontology and corresponds to anapplication associated with the domain of interest; using, by a computersystem, the ontology instance to generate supplemental information forthe executable program, wherein the supplemental information defines oneor more functionalities of the application; and providing, by a computersystem, the supplemental information as input to the executable programwhile the executable program is running to cause the one or morefunctionalities of the application to be made available via the runningexecutable program.
 20. The method of claim 19, wherein the executableprogram obtains the supplemental information from working memory atruntime.